﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyCalc
{
    class ClassSolution
    {
        private double a;//первой число
        private double b;//второе число
        private char ch;//знак
        private string myAction;//sin cos.................

        public ClassSolution(string str1, string str2, char s)//для арифметики
        {
            try
            {
                a = Convert.ToDouble(str1);
                b = Convert.ToDouble(str2);
                ch = s;
            }
            catch (FormatException)
            {
                Console.WriteLine("Не верный ввод");
            }
        }

        public ClassSolution(string str1, int zn)//для sin cos sqrt
        {
            try
            {
                myAction = str1;
                b = zn;
            }
            catch (FormatException)
            {
                Console.WriteLine("Не верный ввод");
            }
        }
        public double result()//если арифметика
        {
            double res = 0;
            switch (ch)
            {
                case '+':
                    res = a + b;
                    break;
                case '-':
                    res = a - b;
                    break;
                case '*':
                    res = a * b;
                    break;
                case '/':
                    if (b == 0)
                    {
                        Console.WriteLine("На '0' делить нельзя!");
                    }
                    else
                    {
                        res = a / b;
                    }
                    break;
                case '%':
                    res = a % b;
                    break;
                case '^':
                    res = Math.Pow(a, b);
                    break;
            }
            return res;
        }

        public double resultAction()//sin cos............
        {
            double res = 0.0;
            switch (myAction)
            {
                case "sin":
                    res = Math.Sin(b * 3.14159265358979 / 180);
                    break;
                case "cos":
                    res = Math.Cos(b * 3.14159265358979 / 180);
                    break;
                case "sqrt":
                    if (b < 0)
                    {
                        Console.WriteLine("Корня из отрицательного числа не существует!");
                    }
                    else
                    {
                        res = Math.Sqrt(b);
                    }
                    break;
                case "exp":
                    double e = 2.7182818284;
                    res = Math.Pow(e, b);
                    break;
                case "factorial":
                    double n = 1;
                    for (int i = 1; i <= b; i++)
                    {
                        n *= i;
                    }
                    res = n;
                        break;                     
            }

            return res;
        }
    }
}
